home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / GRAPHICS / TEXTVEC.ZIP / PROJECT.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-03-13  |  1.1 KB  |  66 lines

  1. .Model Large,Pascal
  2. .Code
  3. .386
  4.  
  5. Public Project2d
  6.  
  7. Proc Project2d Uses gs fs es di si,World:DWord,Screen:DWord,Num:Word
  8.  
  9.   Lfs   si,World
  10.   Les   di,Screen
  11.   
  12.   Mov   cx,Num
  13.  
  14.  @ProjectLooper:
  15.   Push  cx
  16.  
  17.   Mov   ecx,fs:[si+8]   ; Get Z coord
  18.   Cmp   ecx,0
  19.   Jne  @DivOK
  20.  
  21.   Mov   eax,fs:[si]     ; Get X coord
  22.   Shl   eax,9
  23.   Add   eax,320
  24.   Mov   ebx,fs:[si+4]   ; Get Y Coord
  25.   Shl   ebx,9
  26.   Mov   ecx,200
  27.   Sub   ecx,ebx
  28.   Jmp  @StoreScreenCoord
  29.  
  30.  @DivOK:
  31.  
  32.   Mov   eax,fs:[si]    ; Get X Coord
  33.   Shl   eax,9
  34.   Cdq                  ; Expand the sign of EAX through EDX
  35.   IDiv  ecx
  36.   Add   eax,320
  37.   Mov   ebx,eax        ; Store screen X Coord
  38.   Mov   eax,fs:[si+4]
  39.   Shl   eax,9
  40.   Cdq                  ; Expand the sign of EAX through EDX
  41.   IDiv  ecx
  42.   Mov   ecx,200
  43.   Sub   ecx,eax
  44.   Mov   eax,ebx
  45.  
  46.  @StoreScreenCoord:
  47.  
  48. ;;;;   eax = X screen Coord
  49. ;;;;   ecx = Y screen Coord
  50.  
  51.   Mov   es:[di],ax
  52.   Mov   es:[di+2],cx
  53.  
  54. ;; Update offsets to point to next vertex
  55.  
  56.   Add   di,4
  57.   Add   si,12
  58.  
  59.   Pop   cx
  60.   Dec   cx
  61.   Jnz  @ProjectLooper
  62.   Ret
  63. Endp Project2d
  64.  
  65. End
  66.